package cn.iocoder.yudao.module.xiaoBizHandler.service.codegen.newInner.yudao.template.java.controller.vo;

import cn.iocoder.yudao.framework.common.genCode.common.StringBuilderHandler;
import cn.iocoder.yudao.module.xiaoBizHandler.dal.dataobject.codegen.XiaoBizHandlerCodegenColumnDO;
import cn.iocoder.yudao.module.xiaoBizHandler.dal.dataobject.codegen.XiaoBizHandlerCodegenTableDO;
import cn.iocoder.yudao.module.xiaoBizHandler.service.codegen.newInner.yudao.template.CodeGenTemplate;
import cn.iocoder.yudao.module.xiaoBizHandler.service.codegen.newInner.GlobalBinding;
import cn.iocoder.yudao.module.xiaoBizHandler.service.codegen.newInner.LocalBinding;

import java.util.List;

/**
 * 提供给 baseVO、createVO、updateVO 生成字段
 */
public class _Column {

    public static String render(XiaoBizHandlerCodegenColumnDO column) {
        return renderAll(column, true);
    }

    public static String renderCreateReqVo(XiaoBizHandlerCodegenColumnDO column) {
        // CreateReqVo 不需要校验主键，主键是在后台生成的
        return renderAll(column, false);
    }


    public static String renderAll(XiaoBizHandlerCodegenColumnDO column, boolean isValidPri) {
        StringBuilderHandler code = new StringBuilderHandler();

        code.ap("    @ApiModelProperty(value = \"" + column.getColumnComment() + "\"");
        if (!column.getNullable())
            code.ap(", required = true");
        if (column.getExample() != null && !"".equals(column.getExample()))
            code.ap(", example = \"" + column.getExample() + "\"");
        code.apAndBl(")");

        // 判断 @NotEmpty 和 @NotNull 注解
        if (!column.getNullable()) {
            // 如果需要校验主键
            if (isValidPri) {
                if ("String".equals(column.getJavaType())) {
                    code.apAndBl("    @NotEmpty(message = \"" + column.getColumnComment() + "不能为空\")");
                } else {
                    code.apAndBl("    @NotNull(message = \"" + column.getColumnComment() + "不能为空\")");
                }
            }
        }

        if ("Date".equals(column.getJavaType())) {
            code.apAndBl("    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)");
        } else {
            code.apAndBl("    private " + column.getJavaType() + " " + column.getJavaField() + ";");
        }

        return code.toString();
    }

}
